home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2010 April
/
PCWorld0410.iso
/
hity wydania
/
Ubuntu 9.10 PL
/
karmelkowy-koliberek-desktop-9.10-i386-PL.iso
/
casper
/
filesystem.squashfs
/
usr
/
lib
/
ubiquity
/
migration-assistant
/
ma-ask
< prev
next >
Wrap
Text File
|
2009-04-07
|
8KB
|
179 lines
#!/bin/sh
# TODO: Incorporate capb backup.
set -e
. /usr/share/debconf/confmodule
. /usr/share/migration-assistant/ma-script-utils
if [ -z "$1" ]; then
mapath="/usr/bin"
else
mapath="$1"
fi
OLDIFS="$IFS"
NEWLINE='
'
IFS="$NEWLINE"
tmp=
for line in `os-prober`;
do
dist=$(LC_ALL=C expr match "$line" '.*:\(.*\):.*:.*')
location=${line%%:*}
if [ -z "$tmp" ]; then
tmp="$dist ($location)"
else
tmp="$tmp, $dist ($location)"
fi
done
IFS="$OLDIFS"
db_subst migration-assistant/partitions choices "$tmp"
db_input high migration-assistant/partitions || true
db_go || exit 10
db_get migration-assistant/partitions || RET=
IFS="$NEWLINE"
selection=`echo "$RET" | sed -e 's/, /\n/g'`
for choice in $selection; do # Microsoft Windows XP Professional (/dev/hda1)
IFS="$OLDIFS"
location=$(LC_ALL=C expr "$choice" : '.*(\(.*\))$') # /dev/hda1
IFS="$NEWLINE"
for line in `os-prober`; do
IFS="$OLDIFS"
loc="${line%%:*}"
if [ "$location" != "$loc" ]; then
continue
fi
log "setting ostype from: '$line'"
set_os_type "$line" || continue
log "got ostype of: '$ostype', mountpoint is: '$mountpoint'"
path="${loc#*/*/}" # hda1 or discs/disc0/part1
mount_os "$ostype" "$loc"
db_register migration-assistant/users migration-assistant/$path/users
db_subst migration-assistant/$path/users user-choices \
"$($mapath/ma-search-users "$ostype" "$mountpoint" 2>>/var/log/syslog)"
db_subst migration-assistant/$path/users os-type "$choice"
db_input high migration-assistant/$path/users || true
db_go || exit 10
db_get migration-assistant/$path/users || RET=
user_selection=`echo "$RET" | sed -e 's/, /\n/g'`
IFS="$NEWLINE"
for usr in $user_selection; do
IFS="$OLDIFS"
itemsret=$($mapath/ma-search-items --path="$mountpoint" --ostype="$ostype" --user="$usr" 2>>/var/log/syslog) || \
(itemsret=; error "ma-search-items exited with an error for $usr.")
# FIXME: We should figure out if there are any items for each user
# before asking to import from the user. Likewise, we should
# figure out if there are any users to import before asking to
# import from a partition.
if [ -z "$itemsret" ]; then
continue
fi
formatted_user=`echo "$usr" | sed -e 's/ /+/g'`
db_register migration-assistant/items migration-assistant/$path/$formatted_user/items
db_subst migration-assistant/$path/$formatted_user/items choices "$itemsret"
db_subst migration-assistant/$path/$formatted_user/items user "$usr"
# migration-assistant/discs/disc0/part1/Evan/items
db_input high migration-assistant/$path/$formatted_user/items || true
db_go || exit 10
db_register migration-assistant/user migration-assistant/$path/$formatted_user/user
# This prevents m-a from working right. change to choices
#db_set migration-assistant/$path/$formatted_user/user "$(echo "$usr" | tr '[A-Z]' '[a-z]')"
db_subst migration-assistant/$path/$formatted_user/user old-user "$usr"
while :; do
db_input high migration-assistant/$path/$formatted_user/user || true
db_go || exit 10
db_get migration-assistant/$path/$formatted_user/user || RET=
new_user="$RET"
if ! LC_ALL=C expr "$new_user" : '[a-z][-a-z0-9]*$' >/dev/null; then
db_fset migration-assistant/$path/$formatted_user/user seen false
db_fset migration-assistant/username-bad seen false
db_subst migration-assistant/username-bad user "$new_user"
db_input critical migration-assistant/username-bad
continue
fi
# TODO: Either copy this or depend on user-setup.
if grep -v '^#' /usr/lib/user-setup/reserved-usernames | \
grep -q "^$new_user\$"; then
db_fset migration-assistant/$path/$formatted_user/user seen false
db_fset migration-assistant/username-reserved seen false
db_subst migration-assistant/username-reserved user "$new_user"
db_input critical migration-assistant/username-reserved
continue
fi
break
done
# Only ask if the user doesn't match the one seeded for user-setup.
db_get passwd/username || RET=
if [ "$new_user" = "$RET" ]; then
continue
fi
# Password
db_register migration-assistant/password migration-assistant/new-user/$new_user/password
db_subst migration-assistant/new-user/$new_user/password user "$new_user"
db_register migration-assistant/password-again migration-assistant/new-user/$new_user/password-again
db_subst migration-assistant/new-user/$new_user/password-again user "$new_user"
while :; do
db_input high migration-assistant/new-user/$new_user/password || true
db_go || exit 10
db_get migration-assistant/new-user/$new_user/password || RET=
pass=$RET
db_input high migration-assistant/new-user/$new_user/password-again || true
db_go || exit 10
db_get migration-assistant/new-user/$new_user/password-again || RET=
pass2=$RET
if [ -z "$pass2" ] || [ -z "$pass" ]; then
db_set migration-assistant/new-user/$new_user/password ""
db_set migration-assistant/new-user/$new_user/password-again ""
db_fset migration-assistant/password-empty seen "false"
db_input high migration-assistant/password-empty || true
db_fset migration-assistant/new-user/$new_user/password seen "false"
db_fset migration-assistant/new-user/$new_user/password-again seen "false"
db_go || true
continue
fi
if [ "$pass2" = "$pass" ]; then
break
else
db_set migration-assistant/new-user/$new_user/password ""
db_set migration-assistant/new-user/$new_user/password-again ""
db_fset migration-assistant/password-mismatch seen "false"
db_input high migration-assistant/password-mismatch || true
db_fset migration-assistant/new-user/$new_user/password seen "false"
db_fset migration-assistant/new-user/$new_user/password-again seen "false"
db_go || true
fi
done
# Full Name
db_register migration-assistant/fullname migration-assistant/new-user/$new_user/fullname
db_subst migration-assistant/new-user/$new_user/fullname user "$new_user"
db_input high migration-assistant/new-user/$new_user/fullname || true
db_go || exit 10
done
IFS="$OLDIFS"
unmount_os
done
done
# vim:ai:et:sts=4:tw=80:sw=4: